/*
 * Copyright (c) 2021. Moses All Right Reserved
 */

package com.moses.design_patterns.observer;

import java.util.LinkedList;
import java.util.List;

/**
 * @author Moses
 * @email shenhuohui@gmail.com
 * @date 2021/4/17 17:03
 */
//定义被观察者接口
public abstract class Observee {
    // ArrayList和Vector没有太大的差别，ArrayList是线程异步，不安全；Vector是线程同步，安全
    private List<Observer> observers = new LinkedList<>();

    // 允许添加观察者
    public void addObserver(Observer observer){
        this.observers.add(observer);
    }
    // 允许删除观察者
    public void delObserver(Observer observer){
        this.observers.remove(observer);
    }
    // 允许通知所有观察者
    void notifyObserver(){
        for (Observer observer : this.observers){
            observer.action();
        }
    }
}
